/*************************************************************************
    > 文件名: mysqlite3.h
    > 笔者: 田知足
    > 功能:  
    > 创建时间: 2018年08月23日 星期四 18时49分10秒
 ************************************************************************/
#ifndef  _MYSQLITE3_H_
#define  _MYSQLITE3_H_
#include <struct.h>
#include <sqlite3.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define PATH "./mysql.db"			//数据库所在路径

typedef struct break_date
{
	server_to_client date;
	struct break_date * last;
}break_date;

/*
 	0	默认操作
	功能：		数据库使用前操作（打开数据库、创建表格）
	参数：		无
	返回值：	0表示成功	-1表示库失败	-2表示创表失败
*/
	int use_mysql();
/*
	1	打开数据库
	功能：		打开或创建数据库
	参数：		path表示创建或使用路径
	返回值：	0表示创建成功		-1表示创建失败	
*/
	int openmysql();

/*	
	2	创建数据记录表
	功能：		创建数据记录表
	参数：		无
	返回值：	0表示创建成功		-1表示创建失败
*/	
	int create_record_info_table();

/*	
	3	创建用户信息表
	功能：		创建用户信息表
	参数：		无
	返回值：	0表示创建成功		-1表示创建失败
*/	
	int create_user_password_table();

/*
	4	创建门禁ID表
	功能：		创建门禁ID表
	参数：		无
	返回值：	0表示创建成功		-1表示创建失败
*/
	int create_cordid_table();

/*	
	5	创建一个默认用户、默认门禁ID
	功能：		创建一个默认用户		（用户账号为1，密码为1）(门禁cardid 为 1)
	参数：		无
	返回值：	0表示添加成功		-1表示添加失败
*/	
	int insert_default_user_password_table();

/*	
	6	插入数据记录信息
	功能：		插入数据记录信息到数据记录表
	参数：		server_to_client	设备状态、环境状态、当前时间结构体
	返回值：	0表示插入成功		-1表示插入失败
*/
	int	insert_record_info_table(server_to_client * date);

/*	
	7	用户密码验证接口
	功能：		验证用户密码是否正确
	参数：		user_name  	用户名
				password	密码
	返回值：	0表示匹配成功		-1表示不匹配
*/
	int user_password_compare(char * user_name, char * password);

/*	
	8	判定门禁id是否存在
	功能：		判定门禁id是否存在数据库
	参数：		id	门禁ID
	返回值：	0表示存在			-1表示未找到
*/	
	int cordid_compare(int id);

/*	9-1 删除数据
 	功能：		删除匹配到的记录
 	参数：		day	日期
	返回值：	0表示删除成功		-1表示删除失败
*/

	int no_back_delete(char * day);
/*	9-2	输入年月字符串求该月多少天	
 	功能：		输入年月字符串求该月多少天
 	参数：		day		要查询的年月
	返回值：	查询到的天数
*/
	int break_day_from_data(char * day);
/*	
	9-3	删除数据记录信息
	功能：		删除匹配到的数据记录(删除一天)
	参数：		plist	表示传入的头地址		成功后	将获得查询到的数据链表plist为表头
				day		表示要删除的日期（模糊查找）
	返回值：	0表示删除成功		-1表示删除失败
*/	
	int delete_day_record_info_table(break_date * plis, char * day);

/***********************
 	9-4	删除数据记录信息
 	功能:		删除匹配到的数据记录(删除一月)
	参数：		plist	表示传入的头地址		成功后	将获得查询到的数据链表plist为表头
				day		表示要删除的日期（模糊查找）
	返回值：	0表示删除成功		-1表示删除失败	
*/
	int delete_record_info_table(break_date * plis, char * day);

/*	
	10	查找数据记录信息
	功能：		查找匹配到的数据记录
	参数：		plist	表示传入的头地址		成功后	将获得查询到的数据链表plist为表头
				day		表示要查找的日期（模糊查找）
	返回值：	0表示查找成功		-1表示查找失败 	1表示没有查找到
*/	
	int search_record_info_table(break_date * plist, char * day);

/*	
	11	链表表头创建
	功能：		创建一个链表表头
	参数：		无
	返回值：	成功返回一个地址，失败返回NULL
*/	
	break_date * create_break_date();
	
/*	
	12	链表插入
	功能：		链表插入数据（头插，头结点不存数据）
	参数：		date 要插入的数据  head 要插入的表头		
	返回值：	0表示插入成功		-1表示插入失败
*/	
	int insert_break_date(break_date *head,server_to_client * date);
	
/*	
	13	链表删除
	功能：		链表删除
	参数：		head 表示要删除的表的表头 
	返回值：	0表示删除成功	
*/	
	int delete_break_date(break_date * head);
/*
 14	链表查看
 	功能：		链表查看
 	参数：		
	返回值：
*/
 	void look(break_date * head);
/*
 15	关闭数据库
 功能：			关闭数据库
 参数：			无
 返回：			无
*/
	void close_mysql();
/*
 16 用户添加 
 功能：添加一个用户
 参数：			user:用户信息
 返回：0添加成功	-1添加失败	
*/
	int add_user_password_table(admin * user);

/*
 17 用户密码修改
 功能：修改密码
 参数：			user：用户信息
 返回：0表示修改成功	-1表示修改失败	1表示用户不存在
*/
//	int update_user_passworrd_table(char * name, char *old_word,char * new_name);

/*
 18 门禁卡号添加
 功能：添加门禁卡号
 参数：	id:卡号
 返回：0表示添加成功 	-1表示添加失败
*/
	int add_card_id_table(int id);

#endif


